EC2でSnappy Ubuntu Coreを使ってみた
はじめに
Ubuntu Coreの最軽量化版、Snappy Ubuntu CoreがAWSでも使えるようになりました!
ということで早速やってみました!
やってみた
EC2をLaunchする
今回はus-east-1でやってます。EC2のLaunch画面で、[Community AMIs]から"ubuntu-core"で検索すると、以下のようにAMIがヒットします。インスタンスストア版とSSD版があるのですが、今回はSSD版を使用しました。
またLaunch時のUserDataの指定で、以下のように記述します。こうしないとsshdが起動しないためログインできません。
Launch後のSSHログインでは、ユーザ名に"ubuntu"を指定します。
$ ssh -i ./.ssh/mykey.pem -l ubuntu 54.172.XXX.XXX
snappyコマンドを使ってみる
Snappyではsnappyコマンドを使ってシステムを操作します。以下のようなオプションが用意されています。
$ snappy --help Usage:snappy [-h] [-v] {info,versions,search,update-versions,update,rollback,install,uninstall,tags,build,chroot,framework,fake-version,nap} ... snappy command line interface optional arguments: -h, --help show this help message and exit -v, --version Print this version string and exit Commands: {info,versions,search,update-versions,update,rollback,install,uninstall,tags,build,chroot,framework,fake-version,nap} info versions search update-versions update rollback undo last system-image update. install uninstall tags build chroot framework fake-version ==SUPPRESS== nap ==SUPPRESS==
システム状態を確認するのはinfoです。初期状態ではubuntu-coreしか入っていません。
$ snappy info release: ubuntu-core/devel frameworks: apps:
各パッケージのバージョンを確認するのはversionsです。
$ snappy versions Part Tag Installed Available Fingerprint Active ubuntu-core edge 141 - 7f068cb4fa876c *
通常のUbuntuのようなapt-getコマンドは使えません。
$ apt-get update Ubuntu Core does not use apt-get, see 'snappy --help'!
変わりにsnappyコマンドを使います。update-versionsで更新対象があるかを確認できます。今は最新状態なのでバージョンアップ対象は0です。更新する場合はupdateを使います。
$ snappy update-versions 0 updated components are available with your current stability settings.
Dockerをインストールする
とりあえずDockerを入れてみましょう。snappy searchでパッケージの存在を確認します。
$ snappy search docker Part Version Description docker 1.3.2.007 The docker app deployment mechanism
では、snappy installします。
$ sudo snappy install docker docker 4 MB [=============================================================================] OK Part Tag Installed Available Fingerprint Active docker edge 1.3.2.007 - b1f2f85e77adab *
インストールされていることを確認。バージョン1.3.2がインストールされています。
$ snappy versions Part Tag Installed Available Fingerprint Active ubuntu-core edge 141 - 7f068cb4fa876c * docker edge 1.3.2.007 - b1f2f85e77adab *
snappy infoすると、Dockerはframeworksとして表示されます。
$ snappy info release: ubuntu-core/devel frameworks: docker apps:
Hello Worldを入れてみる
お試しパッケージであるhello-worldを入れてみます。
$ snappy search hello-world Part Version Description hello-world 1.0.3 Hello world example $ sudo snappy install hello-world hello-world 31 kB [===============================================================================] OK Part Tag Installed Available Fingerprint Active hello-world edge 1.0.3 - 02a04059ae9304 *
snappy versionすると、hello-worldがインストールされていることが確認できます。
$ snappy versions Part Tag Installed Available Fingerprint Active ubuntu-core edge 141 - 7f068cb4fa876c * docker edge 1.3.2.007 - b1f2f85e77adab * hello-world edge 1.0.3 - 02a04059ae9304 *
hello-worldはappsとして表示されます。
$ snappy info release: ubuntu-core/devel frameworks: docker apps: hello-world
実行するとこんな感じで出力されます。ちなみにただのシェルスクリプトです。
$ hello-world.hello Hello World!
DockerコンテナでownCloudを動かしてみる
さてメイン。Dockerをインストールした状態では、Dockerイメージは何もありません。
$ docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
そこで、Dockerコンテナとして提供されているownCloudをsnappy installコマンドでインストールします。
$ sudo snappy install owncloud owncloud 23 kB [==================================================================================] OK Part Tag Installed Available Fingerprint Active owncloud edge 7.0.3.008 - 81ebbbea41f48e *
ownCloud 7.0.3がインストールされます。
$ snappy versions Part Tag Installed Available Fingerprint Active ubuntu-core edge 141 - 7f068cb4fa876c * docker edge 1.3.2.007 - b1f2f85e77adab * hello-world edge 1.0.3 - 02a04059ae9304 * owncloud edge 7.0.3.008 - 81ebbbea41f48e *
ownCloudもappsとして表示されます。
$ snappy info release: ubuntu-core/devel frameworks: docker apps: hello-world, owncloud
docker imagesコマンドで確認すると、 Dockerイメージが増えていることがわかります。
$ docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE kickinz1/big-owncloud latest 44d3ad1f46e2 5 weeks ago 1.019 GB
ではシステムを再起動します。
$ sudo reboot
再起動後、以下のようにDockerプロセスが稼働しています。
$ ps aux | grep docker root 591 0.0 0.3 19696 3184 ? Ss 03:49 0:00 /bin/bash /apps/docker/1.3.2.007/bin/docker.wrap root 595 0.2 1.7 347500 17348 ? Sl 03:49 0:00 /apps/docker/1.3.2.007/bin/docker -G docker -d -g /var/lib//apps/docker/1.3.2.007 -H unix:///var/run/docker.sock root 852 0.0 1.1 198688 11464 ? Sl 03:49 0:00 docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 443 -container-ip 172.17.0.2 -container-port 443 ubuntu 1375 0.0 0.0 8280 788 pts/0 S+ 03:50 0:00 grep docker
このEC2に443/tcpで接続すると、以下のようにownCloud画面が表示されます!
さいごに
本当はsnappy rollbackもやりたかったのですが、タイミング悪く既に最新の状態でした。が、このロールバックができるという仕組みも、Snappyの一つの売りだと思います。
既にAmazon EC2 Container ServiceでCoreOSが使えるように、 Snappy Ubuntu CoreもECSで使えるようになる日も近いのでは無いでしょうか。楽しみですね!